Tengo una entrada que no puede tener más de 2 decimales. También tengo validación, que no funciona correctamente para números con muchos ceros.
export default function App() { const isValidAmount = (amount) => /^$|^\d+\.?\d{0,2}$/.test(String(amount)); return ( <div> <Formik initialValues={{ decimalNumber: "" }}> {({ handleChange }) => ( <Field className="input" type="number" name="decimalNumber" placeholder="Decimal Number" component={TextField} InputProps={{ onChange: (e) => { if (!isValidAmount(e.target.value)) return; handleChange(e); } }} /> )} </Formik> </div> ); }¿Puede por favor explicar: ¿Qué está pasando?
Utilice el atributo de step HTML para limitar los números permitidos. En este caso, desea limitar a centésimas:
<Field /* ... */ step="0.01" />